"""
    表格工具类总入口
"""
from xlwt import Workbook

from index.main import LeisTools


class ExcelTool:
    """
        表格工具类
    """

    def __init__(self, filename='表格.xlsx', filepath='', first_sheet_name='sheet'):
        """
        :param filename: 文件名默认以xlsx为后缀，如果有点则使用自定义的
        :param filepath: 当前项目的路径
        :param first_sheet_name: 第一个sheet的名称
        """
        self.filename = filename
        self.filepath = filepath
        self.workbook = Workbook(encoding='utf-8')
        self.current_sheet = self.workbook.add_sheet(first_sheet_name)

    def excel_write(self, table_data=[]):
        """
            表格写入
        :param table_data: 表格数据，是个二维数组
        :return: None
        """
        for index, row in enumerate(table_data):
            for col_index, col in enumerate(row):
                if self.current_sheet:
                    self.current_sheet.write(index, col_index, col)

    # 改变当前sheet,支持序号查
    def change_sheet(self, sheet_name):
        """
        改变当前sheet,支持序号查
        :param sheet_name: 可以是序号，也可以是工作表的名称
        :return: 当前工作表
        """
        self.current_sheet = self.workbook.get_sheet(sheet_name)
        return self.current_sheet

    # 添加sheet
    def add_sheet(self, sheet_name):
        self.current_sheet = self.workbook.add_sheet(sheet_name)

    def save_sheet(self, filepath='', filename=''):
        """
        :param filename: 临时决定的保存文件名
        :param filepath: 临时决定的保存位置
        :return:
        """
        filepathtmp = filepath if filepath != '' else self.filepath
        filenametmp = filename if filename != '' else self.filename

        project_path = LeisTools.get_project_root()
        final_filename = filenametmp if ('.' in filenametmp) else filenametmp + '.xlsx'
        self.workbook.save(project_path + '/' + filepathtmp + final_filename)
